Analyzer API
※ graphql-ruby 1.9 で "AST Analyzer" という新機能が追加され、使い方が大きく変わっています。このページはもともと1.8向けでした。
code:graphql
{
user(id: 1) {
name
}
}
code:log
initial_value
query: GraphQL::Query query ...
call
memo: GraphQL::Query query ...
visit: Symbol :enter
irep_node: GraphQL::InternalRepresentation::Node #<Node Query. -> Query {user} @ 1:1 70161400180200> return: GraphQL::ObjectType Query
call
memo: GraphQL::Query query ...
visit: Symbol :enter
irep_node: GraphQL::InternalRepresentation::Node #<Node Query.user -> User {name} @ 2:3 70161400161760> return: GraphQL::ObjectType User
call
memo: GraphQL::Query query ...
visit: Symbol :enter
irep_node: GraphQL::InternalRepresentation::Node #<Node User.name -> String! {} @ 3:5 70161400161000> return: GraphQL::NonNullType String!
call
memo: GraphQL::Query query ...
visit: Symbol :leave
irep_node: GraphQL::InternalRepresentation::Node #<Node User.name -> String! {} @ 3:5 70161400161000> return: GraphQL::NonNullType String!
call
memo: GraphQL::Query query ...
visit: Symbol :leave
irep_node: GraphQL::InternalRepresentation::Node #<Node Query.user -> User {name} @ 2:3 70161400161760> return: GraphQL::ObjectType User
call
memo: GraphQL::Query query ...
visit: Symbol :leave
irep_node: GraphQL::InternalRepresentation::Node #<Node Query. -> Query {user} @ 1:1 70161400180200> return: GraphQL::ObjectType Query
final_value
memo: GraphQL::Query query ...
irep_nodeオブジェクトは渡されたargumentsやクエリに対応するフィールド定義などの情報を持っているため、これらを元にクエリを検査しエラーを返すことなどができます。(irepはInternalRepresentationの略のようです)